home *** CD-ROM | disk | FTP | other *** search
/ Aminet 30 / Aminet 30 (1999)(Schatztruhe)[!][Apr 1999].iso / Aminet / dev / cross / GBDK-2.0.lha / GBDK / lib / floor.ms < prev    next >
Text File  |  1998-10-01  |  708b  |  66 lines

  1.     INCLUDE "macros.ms"
  2.     .include "math.s"
  3.     .module floor_ms
  4.  
  5.     .area    _CODE
  6.     ; Truncate the fp number in HLDE
  7. .floor::
  8.     ld    b,h
  9.     ld    a,h
  10.     and     #0x7f
  11.     cp    #64
  12.     jr    nc,floor_gteqone
  13.     ld    h,#0
  14.     ld    l,h
  15.     ld    d,h
  16.     ld    e,h
  17.     ret            ; Clean zero
  18. floor_gteqone:
  19.     or    a
  20.     rr    l
  21.     rr    d
  22.     rr    e
  23.     inc    a
  24.  
  25.     cp    #64+24
  26.     jr    c,floor_gteqone
  27.  
  28.     ld    h,a
  29.     ld    a,b
  30.     and     #0x80
  31.     or    h
  32.     ld    h,a
  33.     call fpnorm
  34.     ret
  35.  
  36.     ; Return the decimal part of HLDE
  37. .dec::
  38.     ld    b,h
  39.     ld    a,h
  40.     and     #0x7f        ; Remove sign bit
  41.     cp    #65        
  42.     ret    c        ; Return if already <1 
  43.     cp    #64+24        ; Check for a too big number
  44.     jr    c,1$
  45.     ld    hl,#0
  46.     ld    d,h
  47.     ld    e,h
  48.     ret            ; Clean zero
  49. 1$:
  50.     or    a
  51.     rl    e
  52.     rl    d
  53.     rl    l
  54.     dec    a
  55.  
  56.     cp    #64
  57.     jr    nz,1$
  58.  
  59.     ld    h,a
  60.     ld    a,b
  61.     and     #0x80
  62.     or    h
  63.     ld    h,a
  64.     call     fpnorm
  65.     ret
  66.